Personal communication devices such as cellular phones and personal digital assistants are often used for mobile computing and communications. Increasingly, these devices include digital connectivity that can provide many advanced communications services to users. These communications services may include voice, video, graphics, and many other forms of digital data that can be exchanged between users.
Previously, some mobile devices (e.g., cell phones) have had single purpose software/firmware that was targeted towards a single application, such as voice communications. More advanced phones, however, resemble computers as much as telephones. These phones include microprocessors and displays that can run general-purpose computer applications that may or may not have a relation to voice telephony. Such applications may be designed to run “standalone” (e.g. video games) or may use various communications channels of the cell phone for data communications (e.g., pictures, email).
As a result of advancing features in cellular phones, the software architecture of such phones has also become more complex. This complexity is dealt with by providing various layers of software between applications and hardware. For example, in some cellular data applications, the lowest-level software layer is known as cellular modem software. Cellular modem software provides mobile communication functionality based on the capabilities of the underlying hardware. Higher-level software is known as application engine software. The application engine software provides an environment in which user applications operates. For example, the Symbian® Operating System (OS) acts as application engine software in a wide variety of mobile devices. Symbian OS was designed specifically for the requirements of mobile devices. Layered architecture that separates the application engine software from the cellular modem software allows the user applications to be used and re-used on a wide variety of devices and over different communication hardware platforms and channels.
Symbian OS provides a telephony server known as Symbian Telephony Server (ETEL). ETEL allows application-level programs to be written that communicate with a diversity of hardware devices, and without the application programmers having to deal with detailed knowledge of the underlying hardware, protocols, or the cellular modem software. The generic interface provided by ETEL is important in a rapidly expanding field like telephony, where the devices that an application communicates with may not have existed when the application was written.
The ETEL server utilizes software extension modules called TSYs to communicate with the cellular modem software. TSYs are dynamically loadable server-side extension modules that allow telephony services (e.g. GSM, GPRS, 3G) and related data communication to be transparently integrated under Symbian OS. These services are implemented by device hardware and/or cellular networks that require real-time capabilities from cellular modem software. A TSY acts like proxy to translate service invocations on the ETEL server to specific cellular modem software commands, and vice versa. The module also implements protocol state machines and ensures reliable communications with the cellular modem software. The module might also perform flow control and data caching.
Although the use of TSYs is helpful in providing portable and easy ways to develop mobile application software to integrate Symbian OS, the use of TSYs still has disadvantages. The TSY is vendor specific and highly dependent on the underlying proprietary cellular modem software. Therefore a TSY must be written for every version of cellular modem software, as well as cellular modem software from different vendors. Also, a new TSY must also be written if there is a change to a protocol or standard handled by the TSY. For instance, a GSM TSY can not be reused on 3G hardware platform. TSYs are difficult and time-consuming to write and debug, therefore developing TSYs for an increasingly diverse base of hardware is non-trivial.